﻿using System;
using System.Collections.Generic;
using System.Text;

namespace PlanningGIS.Product
{
    public class EnumUtility
    {
        /// <summary>
        /// 判断字符串是否为枚举类型中值的一项
        /// 作者：徐红波
        /// 日期：2012-11-26
        /// </summary>
        /// <param name="pEnumType"></param>
        /// <param name="pValue"></param>
        /// <returns></returns>
        public static bool isOneOfEnumValue(Type pEnumType, string pValue)
        {
            foreach (object obj in Enum.GetValues(pEnumType))
            {
                if (obj.ToString() == pValue)
                { 
                    return true;
                }
            }

            return false;
        }

        /// <summary>
        /// 判断字符串是否为枚举类型中名称的一项
        /// 作者：徐红波
        /// 日期：2012-11-26
        /// </summary>
        /// <param name="pEnumType"></param>
        /// <param name="pValue"></param>
        /// <returns></returns>
        public static bool isOneOfEnumName(Type pEnumType, string pValue)
        {
            foreach (object obj in Enum.GetNames(pEnumType))
            {
                if (obj.ToString() == pValue)
                {
                    return true;
                }
            }

            return false;
        }

        /// <summary>
        /// 通过值字符串获取枚举类型中一项
        /// 作者：徐红波
        /// 日期：2012-11-26 
        /// </summary>
        /// <param name="pEnumType"></param>
        /// <param name="pValue"></param>
        /// <returns></returns>
        public static object getEnumByValue(Type pEnumType, string pValue)
        {
            if (EnumUtility.isOneOfEnumValue(pEnumType, pValue)==true)
            {
                return Enum.Parse(pEnumType, pValue);
            }
            else
            {
                return null;
            }
        }

        /// <summary>
        /// 通过枚举名称字符串获取枚举类型中一项
        /// 作者：徐红波
        /// 日期：2012-11-26 
        /// </summary>
        /// <param name="pEnumType"></param>
        /// <param name="pValue"></param>
        /// <returns></returns>
        public static object getEnumByName(Type pEnumType, string pValue)
        {
            return EnumUtility.getEnumByValue(pEnumType, pValue);
            //if (EnumUtility.isOneOfEnumName(pEnumType, pValue) == true)
            //{
            //    return Enum.Parse(pEnumType, pValue);
            //}
            //else
            //{
            //    return null;
            //}
        }
    }
}
